Research Meteostat

After some researches about meteostat data nearest station in DE that belongs to Kelheim region are:

there are many of them so I am starting to think about extracting all from the Bayern or extract the nearest from longtitude/latitude point with the Kelheim shapefile(using json and Euclid distances)

Kelheim has no weather station, but it could be reconstructed with 2 other

Hohenfels with id: “10775” and Ingolstadt with id:“10860” kelheim_data = {weight1}x{hohenfels} + {weight2}x{inglstadt}

Also this site shows, that there are many of the Kelheim stations in this area, but meteostat doesn’t contain them https://www.wunderground.com/dashboard/pws/IKELHE5

Research Weatherstack

weatherstack_kelheim = read_delim("data/Kelheim_weather_since_july_2008.csv",delim = ",")
Rows: 120312 Columns: 6── Column specification ─────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): description
dbl  (4): hour, precip, visibility, totalsnow_daily
date (1): date
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
print(weatherstack_kelheim)

What to take as a reffer point isn’t clear because of the date(before/after covid) and weather type (sunny,clear,temperature) Also there is no temperature in it :/

Import mobility from Google

global_mobility = read_delim("data/Global_Mobility_Report.csv",",")
de_mobility = global_mobility %>% filter(country_region_code == "DE")
print(unique(de_mobility$sub_region_1))
 [1] NA                       "Baden-Württemberg"      "Bavaria"                "Berlin"                
 [5] "Brandenburg"            "Bremen"                 "Hamburg"                "Hessen"                
 [9] "Lower Saxony"           "Mecklenburg-Vorpommern" "North Rhine-Westphalia" "Rhineland-Palatinate"  
[13] "Saarland"               "Saxony"                 "Saxony-Anhalt"          "Schleswig-Holstein"    
[17] "Thuringia"             
bavaria_mobility = de_mobility %>% filter(sub_region_1 == "Bavaria")

As we can see the most precise region to filter data from is Bavaria :/

Relevant data for the , mobility

bavaria_mobility = de_mobility %>% filter(sub_region_1 == "Bavaria")
bavaria_mobility = bavaria_mobility %>% select(country_region,sub_region_1,date,residential_percent_change_from_baseline) %>%
  mutate(residential_percent_change_from_baseline = -residential_percent_change_from_baseline,
         source = "Google")%>%
  rename(BundeslandID = sub_region_1,not_at_home_change = residential_percent_change_from_baseline)
bavaria_mobility = bavaria_mobility %>% select(date,BundeslandID,not_at_home_change,source)
#Need to filter out weekends

plt = ggplot(bavaria_mobility)+
  geom_point(aes(x = date,y = not_at_home_change))
ggplotly(plt)

Import mobility from Senozon

snz_mobility = read_delim("data/mobilityData_OverviewBL_weekly.csv",";")
Rows: 2108 Columns: 4── Column specification ─────────────────────────────────────────────────────────────────────────────────
Delimiter: ";"
chr (1): BundeslandID
dbl (3): date, outOfHomeDuration, percentageChangeComparedToBeforeCorona
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
snz_mobility = snz_mobility %>% filter(BundeslandID == "Bayern") %>% mutate(source = "senozon") %>% select(-outOfHomeDuration) %>% rename(not_at_home_change = percentageChangeComparedToBeforeCorona)
snz_mobility$date = as.Date(strptime(snz_mobility$date,"%Y%m%d"))
plt = ggplot(snz_mobility)+
  geom_point(aes(x = date,y = not_at_home_change))
ggplotly(plt)

Aggregate 2 sources

mob_joined = rbind(snz_mobility,bavaria_mobility)

plt = ggplot(mob_joined)+
  geom_point(aes(x = date,y = not_at_home_change,color = source))
ggplotly(plt)
NA
LS0tDQp0aXRsZTogIkJhZCB3ZWF0aGVyIEtlbGhlaW0gRGVtbyINCmF1dGhvcjogIk9sZWtzYW5kciBTb2JvbGlldiINCiNhbHdheXNfYWxsb3dfaHRtbDogdHJ1ZQ0Kb3V0cHV0Og0KICAjcGRmX2RvY3VtZW50OiBkZWZhdWx0DQogIGh0bWxfbm90ZWJvb2s6DQogICAgdGhlbWU6IGNvc21vDQogICAgaGlnaGxpZ2h0OiBtb25vY2hyb21lDQogICAgY29kZV9mb2xkaW5nOiBzaG93DQplZGl0b3Jfb3B0aW9uczogDQogIGNodW5rX291dHB1dF90eXBlOiBpbmxpbmUNCi0tLQ0KYGBge3IsIGluY2x1ZGU9IEZBTFNFfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCmxpYnJhcnkocGxvdGx5KQ0KYGBgDQoNCg0KIyMgKipSZXNlYXJjaCBNZXRlb3N0YXQqKg0KQWZ0ZXIgc29tZSByZXNlYXJjaGVzIGFib3V0IG1ldGVvc3RhdCBkYXRhIG5lYXJlc3Qgc3RhdGlvbiBpbiBERSB0aGF0IGJlbG9uZ3MgdG8gS2VsaGVpbSByZWdpb24gDQphcmU6DQoNCiogIk1hbGxlcnNkb3JmLVBmYWZmZW5iZXJnL05pZWRlcmJheWVybiIgd2l0aCBhbiBpZDogIkQzMTQ3Ig0KKiAiTmV1bWFya3QgLyBIw7ZoZW5iZXJnIiB3aXRoIGFuZCBpZDogIjY5MTEwIg0KKiBVZWJ1bmdzZG9yZiAvIEVtaG9mDQoNCnRoZXJlIGFyZSBtYW55IG9mIHRoZW0gc28gSSBhbSBzdGFydGluZyB0byB0aGluayBhYm91dCBleHRyYWN0aW5nIGFsbCBmcm9tIHRoZSBCYXllcm4gb3IgZXh0cmFjdCB0aGUgbmVhcmVzdCBmcm9tIGxvbmd0aXR1ZGUvbGF0aXR1ZGUgcG9pbnQgd2l0aCB0aGUgS2VsaGVpbSBzaGFwZWZpbGUodXNpbmcganNvbiBhbmQgRXVjbGlkIGRpc3RhbmNlcykgDQoNCltLZWxoZWltIGhhcyBubyB3ZWF0aGVyIHN0YXRpb24sIGJ1dCBpdCBjb3VsZCBiZSByZWNvbnN0cnVjdGVkIHdpdGggMiBvdGhlcl0oaHR0cHM6Ly93ZWF0aGVyc3BhcmsuY29tL3kvNzAzNzAvQXZlcmFnZS1XZWF0aGVyLWluLUtlbGhlaW0tR2VybWFueS1ZZWFyLVJvdW5kKQ0KDQpIb2hlbmZlbHMgd2l0aCBpZDogIjEwNzc1IiBhbmQgSW5nb2xzdGFkdCB3aXRoIGlkOiIxMDg2MCINCioqa2VsaGVpbV9kYXRhID0ge3dlaWdodDF9eHtob2hlbmZlbHN9ICsge3dlaWdodDJ9eHtpbmdsc3RhZHR9KioNCg0KQWxzbyB0aGlzIHNpdGUgc2hvd3MsIHRoYXQgdGhlcmUgYXJlIG1hbnkgb2YgdGhlIEtlbGhlaW0gc3RhdGlvbnMgaW4gdGhpcyBhcmVhLCBidXQgbWV0ZW9zdGF0IGRvZXNuJ3QgY29udGFpbiB0aGVtDQpodHRwczovL3d3dy53dW5kZXJncm91bmQuY29tL2Rhc2hib2FyZC9wd3MvSUtFTEhFNQ0KDQoNCg0KIyMgKipSZXNlYXJjaCBXZWF0aGVyc3RhY2sqKg0KDQpgYGB7ciBmaXJzdCBsb29rIGF0IHdlYXRoZXJzdGFjayBkYXRhIHNwZWNpZmljIHRvIEtlbGhlaW19DQp3ZWF0aGVyc3RhY2tfa2VsaGVpbSA9IHJlYWRfZGVsaW0oImRhdGEvS2VsaGVpbV93ZWF0aGVyX3NpbmNlX2p1bHlfMjAwOC5jc3YiLGRlbGltID0gIiwiKQ0KcHJpbnQod2VhdGhlcnN0YWNrX2tlbGhlaW0pDQpgYGANCldoYXQgdG8gdGFrZSBhcyBhIHJlZmZlciBwb2ludCBpc24ndCBjbGVhciBiZWNhdXNlIG9mIHRoZSBkYXRlKGJlZm9yZS9hZnRlciBjb3ZpZCkgYW5kIHdlYXRoZXIgdHlwZSAoc3VubnksY2xlYXIsdGVtcGVyYXR1cmUpDQpBbHNvIHRoZXJlIGlzIG5vIHRlbXBlcmF0dXJlIGluIGl0IDovDQoNCiMjICoqSW1wb3J0IG1vYmlsaXR5IGZyb20gR29vZ2xlKioNCmBgYHtyIGluY2x1ZGluZyBnb29nbGUgZ2VybWFueSBtb2JpbGl0eSBkYXRhLG1lc3NhZ2U9RkFMU0V9DQpnbG9iYWxfbW9iaWxpdHkgPSByZWFkX2RlbGltKCJkYXRhL0dsb2JhbF9Nb2JpbGl0eV9SZXBvcnQuY3N2IiwiLCIpDQpkZV9tb2JpbGl0eSA9IGdsb2JhbF9tb2JpbGl0eSAlPiUgZmlsdGVyKGNvdW50cnlfcmVnaW9uX2NvZGUgPT0gIkRFIikNCmBgYA0KDQpgYGB7ciB3aGF0IHJlZ2lvbnMgYXJlIGRhdGEgcHJvdmlkZWR9DQpwcmludCh1bmlxdWUoZGVfbW9iaWxpdHkkc3ViX3JlZ2lvbl8xKSkNCg0KYGBgDQpBcyB3ZSBjYW4gc2VlIHRoZSBtb3N0IHByZWNpc2UgcmVnaW9uIHRvIGZpbHRlciBkYXRhIGZyb20gaXMgQmF2YXJpYSA6Lw0KDQpSZWxldmFudCBkYXRhIGZvciB0aGUgLCBtb2JpbGl0eQ0KDQpgYGB7ciBtb2JpbGl0eSBkYXRhIGJhdmFyaWF9DQpiYXZhcmlhX21vYmlsaXR5ID0gZGVfbW9iaWxpdHkgJT4lIGZpbHRlcihzdWJfcmVnaW9uXzEgPT0gIkJhdmFyaWEiKQ0KYmF2YXJpYV9tb2JpbGl0eSA9IGJhdmFyaWFfbW9iaWxpdHkgJT4lIHNlbGVjdChjb3VudHJ5X3JlZ2lvbixzdWJfcmVnaW9uXzEsZGF0ZSxyZXNpZGVudGlhbF9wZXJjZW50X2NoYW5nZV9mcm9tX2Jhc2VsaW5lKSAlPiUNCiAgbXV0YXRlKHJlc2lkZW50aWFsX3BlcmNlbnRfY2hhbmdlX2Zyb21fYmFzZWxpbmUgPSAtcmVzaWRlbnRpYWxfcGVyY2VudF9jaGFuZ2VfZnJvbV9iYXNlbGluZSwNCiAgICAgICAgIHNvdXJjZSA9ICJHb29nbGUiKSU+JQ0KICByZW5hbWUoQnVuZGVzbGFuZElEID0gc3ViX3JlZ2lvbl8xLG5vdF9hdF9ob21lX2NoYW5nZSA9IHJlc2lkZW50aWFsX3BlcmNlbnRfY2hhbmdlX2Zyb21fYmFzZWxpbmUpDQpiYXZhcmlhX21vYmlsaXR5ID0gYmF2YXJpYV9tb2JpbGl0eSAlPiUgc2VsZWN0KGRhdGUsQnVuZGVzbGFuZElELG5vdF9hdF9ob21lX2NoYW5nZSxzb3VyY2UpDQojTmVlZCB0byBmaWx0ZXIgb3V0IHdlZWtlbmRzDQoNCnBsdCA9IGdncGxvdChiYXZhcmlhX21vYmlsaXR5KSsNCiAgZ2VvbV9wb2ludChhZXMoeCA9IGRhdGUseSA9IG5vdF9hdF9ob21lX2NoYW5nZSkpDQpnZ3Bsb3RseShwbHQpDQpgYGANCiMjICoqSW1wb3J0IG1vYmlsaXR5IGZyb20gU2Vub3pvbioqDQoNCmBgYHtyIGltcG9ydCBmcm9tIHNlbm96b259DQpzbnpfbW9iaWxpdHkgPSByZWFkX2RlbGltKCJkYXRhL21vYmlsaXR5RGF0YV9PdmVydmlld0JMX3dlZWtseS5jc3YiLCI7IikNCnNuel9tb2JpbGl0eSA9IHNuel9tb2JpbGl0eSAlPiUgZmlsdGVyKEJ1bmRlc2xhbmRJRCA9PSAiQmF5ZXJuIikgJT4lIG11dGF0ZShzb3VyY2UgPSAic2Vub3pvbiIpICU+JSBzZWxlY3QoLW91dE9mSG9tZUR1cmF0aW9uKSAlPiUgcmVuYW1lKG5vdF9hdF9ob21lX2NoYW5nZSA9IHBlcmNlbnRhZ2VDaGFuZ2VDb21wYXJlZFRvQmVmb3JlQ29yb25hKQ0Kc256X21vYmlsaXR5JGRhdGUgPSBhcy5EYXRlKHN0cnB0aW1lKHNuel9tb2JpbGl0eSRkYXRlLCIlWSVtJWQiKSkNCnBsdCA9IGdncGxvdChzbnpfbW9iaWxpdHkpKw0KICBnZW9tX3BvaW50KGFlcyh4ID0gZGF0ZSx5ID0gbm90X2F0X2hvbWVfY2hhbmdlKSkNCmdncGxvdGx5KHBsdCkNCmBgYA0KDQoNCg0KIyMgKipBZ2dyZWdhdGUgMiBzb3VyY2VzKioNCg0KYGBge3IgZ29vZ2xlK3Nlbm96b259DQptb2Jfam9pbmVkID0gcmJpbmQoc256X21vYmlsaXR5LGJhdmFyaWFfbW9iaWxpdHkpDQoNCnBsdCA9IGdncGxvdChtb2Jfam9pbmVkKSsNCiAgZ2VvbV9wb2ludChhZXMoeCA9IGRhdGUseSA9IG5vdF9hdF9ob21lX2NoYW5nZSxjb2xvciA9IHNvdXJjZSkpDQpnZ3Bsb3RseShwbHQpDQoNCmBgYA==